Extensible record
#WIP
GPT-4.icon
拡張可能なレコード(extensible records)とは、プログラミング言語において、レコード型(オブジェクトのような構造体)を動的に拡張できる特徴を持つデータ型のことです。この概念は、特に型システムが強力な言語、例えばHaskellやElmなどでよく見られます。
以下に、拡張可能なレコードの特徴と利点を簡単に説明します:
動的な拡張:
拡張可能なレコードは、既存のレコードに新しいフィールドを追加することができます。これにより、柔軟なデータ構造の構築が可能になります。
型安全:
レコードの拡張は型システムによって管理されるため、型安全性が保たれます。これは、フィールドの追加やアクセスがコンパイル時にチェックされ、エラーを未然に防ぐことができるということです。
部分レコード:
拡張可能なレコードを使用すると、部分的なレコードを扱うことができます。例えば、特定のフィールドだけを持つサブセットを取り扱うことができ、必要に応じてフィールドを追加したり削除したりできます。
HaskellのRecordの問題点を克服するための概念やアイディアの総称(?)
それが論文だったり、packageだったり、GHC拡張だったりで提案されている
いや、たぶんもっと一般的なものを指しているっぽいmrsekut.icon
これらの提案を追いかけるのは大変で、現在どの手法が最も優勢かは一見してわからないmrsekut.icon
デファクトスタンダードはどれなのかというのもわからん #??
関連するGHC拡張の例
DuplicateRecordFields
etc.
解決策の例
haskell/docs/extensible-record.md at master · lotz84/haskell · GitHub
@lotz氏のまとめ
Extensible record - HaskellWiki
パッと見この辺に書いてあるものだけで20個ぐらいあるmrsekut.icon
fumieval/extensible
日本語の資料が多い
TH使ってる
hierarchical-env
https://qiita.com/autotaker1984/items/8f7e4424bbe46fbd3227
Row polymorphismを持つ
TH使ってる
Vinyl
THを使っていない
Bookkeeper.Permissions
https://hackage.haskell.org/package/bookkeeper-permissions-0.1.0.0/docs/Bookkeeper-Permissions.html
THを使ってない
2016で止まってる
rawr
THを使ってない
https://hackage.haskell.org/package/rawr
2017で止まってる
#??
HaskellのRecordの問題点の状況はどうなっているのか?
どういうものをさしてextensible recordと呼ぶのか
GHCの今の状況はどうなっているのか
関連するGHC拡張は何で、それぞれ何ができるか
そしてそれらはよく実際使われているのか
とはいえ、この記事は5年前の状況なので今どうなっているのかわからない
magic type classesとは何か
入っているのかどうか
fumieval/extensible#61211b421982700000da4338
結局、良い感じにrecord使いたいならどれが一番良いのか
本当に知りたいのはこれだけだけどmrsekut.icon
できればtemplate haskellに依存したくないmrsekut.icon
GHCのrecordの状況と、extensible recordなpackageの関係はどうなっているのか
依然として外部ライブらいに頼らないとツライ感じ7日
superrecord
https://www.athiemann.net/2017/07/02/superrecord.html
このノートにメモするので合ってるのか知らんmrsekut.icon
中身を読んでいない
ここで見かけた
https://wiki.haskell.org/Extensible_record